package com.jsh.erp.service.material;

import com.alibaba.fastjson.JSONObject;
import com.google.common.collect.Lists;
import com.jsh.erp.datasource.entities.MaterialVo4Unit;
import com.jsh.erp.service.ICommonQuery;
import com.jsh.erp.service.depot.DepotResource;
import com.jsh.erp.service.depot.DepotService;
import com.jsh.erp.utils.Constants;
import com.jsh.erp.utils.QueryUtils;
import com.jsh.erp.utils.StringUtil;
import org.springframework.stereotype.Service;

import javax.annotation.Resource;
import javax.servlet.http.HttpServletRequest;
import java.util.List;
import java.util.Map;

@Service(value = "material_component")
@MaterialResource
public class MaterialComponent implements ICommonQuery {

    @Resource
    private MaterialService materialService;

    @Override
    public Object selectOne(Long id) throws Exception {
        return materialService.getMaterial(id);
    }

    @Override
    public List<?> select(Map<String, String> map)throws Exception {
        return getMaterialList(map);
    }

    private List<?> getMaterialList(Map<String, String> map) throws Exception{
        String search = map.get(Constants.SEARCH);
        String categoryId = StringUtil.getInfo(search, "categoryId");
        String mBarCode = StringUtil.getInfo(search, "mBarCode");
        String materialParam = StringUtil.getInfo(search, "materialParam");
        String color = StringUtil.getInfo(search, "color");
        String materialOther = StringUtil.getInfo(search, "materialOther");
        String weight = StringUtil.getInfo(search, "weight");
        String expiryNum = StringUtil.getInfo(search, "expiryNum");
        String enableSerialNumber = StringUtil.getInfo(search, "enableSerialNumber");
        String enableBatchNumber = StringUtil.getInfo(search, "enableBatchNumber");
        String position = StringUtil.getInfo(search, "position");
        String enabled = StringUtil.getInfo(search, "enabled");
        String remark = StringUtil.getInfo(search, "remark");
        String mpList = StringUtil.getInfo(search, "mpList");

        MaterialVo4Unit materialObjectParam = new MaterialVo4Unit();
        materialObjectParam.setFullBarCode(map.get("fullBarCode"));
        materialObjectParam.setmBarCode(map.get("mBarCode"));
        materialObjectParam.setmBarCode(StringUtil.getInfo(search,"name"));
        materialObjectParam.setmBarCode(map.get("mfrs"));
        materialObjectParam.setmBarCode(map.get("model"));
        materialObjectParam.setmBarCode(map.get("otherField1"));
        materialObjectParam.setmBarCode(map.get("caizhi"));
        materialObjectParam.setmBarCode(map.get("biaozhun"));
        materialObjectParam.setmBarCode(map.get("lianjie"));
        materialObjectParam.setmBarCode(map.get("paoguangdu"));
        materialObjectParam.setmBarCode(map.get("mopian"));
        materialObjectParam.setmBarCode(map.get("changdu"));
        materialObjectParam.setmBarCode(map.get("otherField2"));
        materialObjectParam.setmBarCode(map.get("otherField3"));
        materialObjectParam.setmBarCode(map.get("standard"));

        List<MaterialVo4Unit> materialVo4UnitList = materialService
                .selectByFullParamMaterial(
                        StringUtil.getInfo(search,"mBarCode"),
                        StringUtil.getInfo(search,"name"),
                        StringUtil.getInfo(search,"mfrs"),
               StringUtil.getInfo(search,"model"),
                        StringUtil.getInfo(search,"otherField1"),
                        StringUtil.getInfo(search,"caizhi"),
                        StringUtil.getInfo(search,"biaozhun"),
               StringUtil.getInfo(search,"lianjie"),
                        StringUtil.getInfo(search,"paoguangdu"),
                        StringUtil.getInfo(search,"mopian"),
                        StringUtil.getInfo(search,"changdu"),
               StringUtil.getInfo(search,"otherField2"),
                        StringUtil.getInfo(search,"otherField3"),
                        StringUtil.getInfo(search,"standard"),
                enabled, remark, categoryId, mpList, QueryUtils.offset(map), QueryUtils.rows(map));


//        List<MaterialVo4Unit> materialVo4UnitList = materialService.select(materialObjectParam,materialParam, color, materialOther, weight, expiryNum,
//                enableSerialNumber, enableBatchNumber, position, enabled, remark, categoryId, mpList, QueryUtils.offset(map), QueryUtils.rows(map));


        return materialVo4UnitList;
    }

    @Override
    public Long counts(Map<String, String> map)throws Exception {
        String search = map.get(Constants.SEARCH);
        String categoryId = StringUtil.getInfo(search, "categoryId");
        String materialParam = StringUtil.getInfo(search, "materialParam");
        String color = StringUtil.getInfo(search, "color");
        String materialOther = StringUtil.getInfo(search, "materialOther");
        String weight = StringUtil.getInfo(search, "weight");
        String expiryNum = StringUtil.getInfo(search, "expiryNum");
        String enableSerialNumber = StringUtil.getInfo(search, "enableSerialNumber");
        String enableBatchNumber = StringUtil.getInfo(search, "enableBatchNumber");
        String position = StringUtil.getInfo(search, "position");
        String enabled = StringUtil.getInfo(search, "enabled");
        String remark = StringUtil.getInfo(search, "remark");
        String mpList = StringUtil.getInfo(search, "mpList");

        return materialService.countsByFullParamMaterial(
                        StringUtil.getInfo(search,"mBarCode"),
                        StringUtil.getInfo(search,"name"),
                        StringUtil.getInfo(search,"mfrs"),
                        StringUtil.getInfo(search,"model"),
                        StringUtil.getInfo(search,"otherField1"),
                        StringUtil.getInfo(search,"caizhi"),
                        StringUtil.getInfo(search,"biaozhun"),
                        StringUtil.getInfo(search,"lianjie"),
                        StringUtil.getInfo(search,"paoguangdu"),
                        StringUtil.getInfo(search,"mopian"),
                        StringUtil.getInfo(search,"changdu"),
                        StringUtil.getInfo(search,"otherField2"),
                        StringUtil.getInfo(search,"otherField3"),
                        StringUtil.getInfo(search,"standard"),
                        enabled, remark, categoryId, mpList);

    }

    @Override
    public int insert(JSONObject obj, HttpServletRequest request) throws Exception{
        return materialService.insertMaterial(obj, request);
    }

    @Override
    public int update(JSONObject obj, HttpServletRequest request)throws Exception {
        return materialService.updateMaterial(obj, request);
    }

    @Override
    public int delete(Long id, HttpServletRequest request)throws Exception {
        return materialService.deleteMaterial(id, request);
    }

    @Override
    public int deleteBatch(String ids, HttpServletRequest request)throws Exception {
        return materialService.batchDeleteMaterial(ids, request);
    }

    @Override
    public int checkIsNameExist(Long id, String name)throws Exception {
        return materialService.checkIsNameExist(id, name);
    }

}
